This invention relates generally to communications and, more particularly, to echo cancellation in a communications system.
Today, modems, or data communications equipment (DCEs), are available that provide the capability to communicate at data rates as high as 56 kbps (thousands of bits per second) over a plain-old-telephone system (POTS) local loop using full-duplex communications. This enables high-speed switched data connections through the public switched telephone network (PSTN) for accessing, e.g., the Internet.
Unfortunately, although the capability is there, a user of a high-speed modem cannot realistically expect to consistently establish data connections at, e.g., 56 kbps. For example, during establishment of a switched data connection, the 56 kbps modem evaluates the response of the communications channel for negotiating the data rate with the opposite endpoint. As such, limiting factors like line conditions over the local loop, may result in negotiated data rates that are less than the 56 kbps.
We have realized that one limiting factor in achieving a high-speed data connection is the amount of echo that a full-duplex modem can remove from a received signal. Currently, a full-duplex modem startup, or handshaking, sequence includes a tone with phase reversals that is recognized by echo cancellation equipment in the PSTN as a signal to disable the network echo cancelers. In other words, the network equipment of the PSTN does not perform echo cancellation during a data call. As such, the modem at each end of the data connection includes a far-echo canceler to compensate for far echoes. However, the network equipment also converts the analog local loop signal into a digital signal and then compands the digital signal using either A-law or xcexc-law companding rules. The network device that performs this function is known as a CODEC (coder-decoder). Unfortunately, this companding by the network equipment introduces non-linearities into the signal. These non-linearities limit the amount of far-echo that can be removed by a modem under different line conditions and, therefore, may negatively affect the negotiated data rate.
In the above-mentioned network equipment, the precision and signal to quantization ratio of the above-mentioned digital signal can be significantly higher than the companded version of the digital signal. As such, we have realized that if echo cancellation is applied during a data call on the digital signal (before companding), more echo cancellation can be achieved than in a DCE or other network echo canceler equipment because of this higher precision. As a result, since more echo may be removed, the probability of connecting a data call at a higher data rate increases. However, training of such a network echo canceler during a data call presents a problem. In particular, such a network echo canceler would create an apparent time-varying channel from the perspective of the DCE, which would have difficulty training the far-echo canceler of the DCE correctly. Therefore, and in accordance with the principles of the invention, a network echo canceler performs echo cancellation on a digital signal during a data call, where the network echo canceler is trained off-line.
In an embodiment of the invention, a CODEC includes an echo canceler. This CODEC recognizes the presence of a data call by detecting predefined signaling portions of a modem handshaking process. The CODEC performs echo cancellation on the respective digital signal of the detected data call before performing a companding operation. For each such data call, the CODEC uses a stored channel model for performing the echo cancellation. At the start of each detected data call, the CODEC trains off-line during selected segments of the modem startup signaling and then stores the new channel model for use in a future data call. The modem training sequence includes signals that are almost optimal for high-speed good quality adaptations. Since each CODEC is generally allocated for the same subscriber loop from call to call, the characteristics of the impedance match with the local loop should be very similar from one data call to the next. This means that adaptation during prior data calls should provide a channel model that will work very well for canceling echo during subsequent calls.